package cn.xeblog.plugin.mode;

import cn.xeblog.plugin.action.ConsoleAction;
import cn.xeblog.plugin.enums.Style;
import com.intellij.ui.JBColor;
import lombok.AllArgsConstructor;
import lombok.Getter;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.StyleConstants;

/**
 * 模式枚举
 *
 * @author anlingyi
 * @date 2020/9/1
 */
@AllArgsConstructor
@Getter
public enum ModeEnum implements Mode {
  /**
   * 默认模式
   */
  DEFAULT("默认") {
    @Override
    public void init() {
      // 初始化样式
      Style.initStyle();
    }
  },
  /**
   * 浑水摸鱼模式（聊天内容将会被隐藏,字体颜色设置为 IDEA 的背景色）
   */
  TROUBLED_WATERS("浑水摸鱼") {
    @Override
    public void handleStyle(MutableAttributeSet style) {
      // 设置前景色
      StyleConstants.setForeground(style, JBColor.background());
    }

    @Override
    public void renderTextBefore(String text) {
      // 渲染 “*”
      ConsoleAction.render("*", Style.WARN.getByIgnoreMode());
    }
  };

  /**
   * 模式名称
   */
  private String name;

  /**
   * 通过下标获取模式
   *
   * @param index 模式所属下标
   * @return 模式所属下标，为空表示不存在
   */
  public static ModeEnum getMode(int index) {
    if (index < 0 || index >= values().length) {
      return null;
    }
    return values()[index];
  }

}
